#ifndef _BSP_SOFTI2C_H
#define _BSP_SOFTI2C_H

/// @brief 
/// @param pin_id 
/// @return 
uint8_t I2C_HAL_PinRead(uint8_t pin_id);

/// @brief 
/// @param  
/// @return 
uint8_t wait_for_scl_high(void);

/// @brief 
/// @param  
void I2C_HAL_MasterSendAck(void);

/// @brief 
/// @param  
void I2C_HAL_Init(void);


/// @brief 
/// @param pin_id 
/// @param bit_status 
void I2C_HAL_PinWrite(uint8_t pin_id, uint8_t bit_status);

/// @brief 
/// @param pin_id 
/// @return 
uint8_t I2C_HAL_PinRead(uint8_t pin_id);

/// @brief 
/// @param  
void I2C_HAL_GenerateStart(void);

/// @brief 
/// @param  
void I2C_HAL_GenerateStop(void);

/// @brief 
/// @param data 
/// @return 
uint8_t I2C_HAL_SendByte(uint8_t data);


/// @brief 
/// @param data 
/// @param ack_status 
void I2C_HAL_ReadByte(uint8_t* data, uint8_t ack_status);

#endif